package br.com.financas.service;

import java.util.ArrayList;
import java.util.List;

import br.com.financas.abstractions.IReceitaDataRepository;
import br.com.financas.abstractions.IReceitaDataService;
import br.com.financas.abstractions.IReceitaRepository;
import br.com.financas.entity.Receita;
import br.com.financas.entity.ReceitaData;
import br.com.financas.entity.Usuario;
import br.com.financas.repository.ReceitaDataRepository;
import br.com.financas.repository.ReceitaRepository;

public class ReceitaDataService implements IReceitaDataService<ReceitaData> {
	private IReceitaDataRepository<ReceitaData> receitaDataRepository;
	private IReceitaRepository<Receita> receitaRepository;
	private List<ReceitaData> receitaDataList;
	
	public ReceitaDataService(){
		receitaDataRepository =  new ReceitaDataRepository(manager);
		receitaDataList =  new ArrayList<ReceitaData>();
		receitaRepository = new ReceitaRepository(manager);
	}

	@Override
	public String validaInserir(ReceitaData receitaData) throws Exception {
		receitaDataRepository.inserir(receitaData);
		return null;
	}

	@Override
	public boolean validaDeletar(ReceitaData receitaData) throws Exception {
		Receita receita;
		boolean deletado = false;
		List<ReceitaData> receitaDatas = new ArrayList<ReceitaData>();
		receitaDatas = obterPorReceita(receitaData.getReceita());
		
		receita = receitaData.getReceita();
		
		if(receitaDatas.size() <= 1){
			receitaRepository.deletar(receita);
			deletado = true;
		}else{
			receitaDataRepository.deletar(receitaData);
			deletado = true;
		}
		
		return deletado;
	}

	@Override
	public String validaAtualizar(ReceitaData receitaData) {
		String msgErro = null;
		msgErro = receitaData.getReceita().getValor() <=0 ? "valor.invalido" : msgErro;
		
		if(msgErro ==  null)
		receitaDataRepository.atualizar(receitaData);
		return msgErro;
	}

	@Override
	public List<ReceitaData> obterTodos() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<ReceitaData> obterPorUsuario(Usuario usuario) {
		receitaDataList = receitaDataRepository.obterPorUsuario(usuario);
		return receitaDataList;
	}

	@Override
	public List<ReceitaData> obterPorReceita(Receita receita) {
		return receitaDataRepository.obterPorReceita(receita);
	}

}
